package com.wjm.api.socket;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

/**
 * Data:2022年07月24日
 * Author:wjm
 * Content: C-S通信的服务端
 */
public class Server {
    public static void main(String[] args) {
        //声明一个服务端变量
        ServerSocket serverSocket = null;
        try {

            //创建服务端对象，并申请端口号
            serverSocket = new ServerSocket(6666);
            System.out.println("服务端已启动!");
            //监听客户端的链接
            Socket socket = serverSocket.accept();

            //当和客户端创建连接之后，通过获得的Socket对象进行数据交互

            //获取输入流，用于读取客户端发的消息
            InputStream in = socket.getInputStream();
            //将字节流转换为字符缓冲流
            BufferedReader reader = new BufferedReader(new InputStreamReader(in,"utf-8"));
            System.out.println(1);
            //读取获得的内容
            String message = reader.readLine();
            System.out.println(2);
            System.out.println("客户端说:"+message);



            //获取输出流
            OutputStream out = socket.getOutputStream();
            //将字节流转换为字符流
            PrintWriter writer = new PrintWriter(new OutputStreamWriter(out,"utf-8"),true);
            //写数据
            writer.println("Hi，客户端，你已成功建立连接");
            System.out.println("消息已发送");

//            //获取输出流
//            OutputStream out = socket.getOutputStream();
//            //将字节流转换为字符缓冲流
//            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out,"utf-8"));
//            //写数据
//            writer.write("Hi，客户端，你已成功建立连接");
//            //如果不换行的话，客户端的readLine方法不能够识别到你这个语句是什么时候结束
//            writer.newLine();
//            writer.flush();
//            System.out.println("消息已发送");


            /*
            * 简易聊天室
            *
            * 与客户端进行发消息和读消息
            * */
            Scanner scanner = new Scanner(System.in);
            do {
                //先读取客户端发的消息
                message = reader.readLine();
                System.out.println("客户端说："+message);

                //给客户端回消息
                String str = scanner.next();
                writer.println(str);
            }while (!message.equals("exit"));//当客户端发送exit时结束对话


//                //简易聊天室输出流使用BufferedWriter的方式
//            Scanner scanner = new Scanner(System.in);
//            do {
//                //先读取客户端发的消息
//                message = reader.readLine();
//                System.out.println("客户端说："+message);
//
//                //给客户端回消息
//                String str = scanner.next();
//                writer.write(str);
//                //如果不换行的话，客户端的readLine方法不能够识别到你这个语句是什么时候结束
//                writer.newLine();
//                writer.flush();
//            }while (!message.equals("exit"));//当客户端发送exit时结束对话




        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                serverSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
